package cn.px.dao.vo.query.sparepartmanage;


import cn.px.common.bean.BaseVO;
import cn.px.common.validation.group.UpdateGroup;
import cn.px.dao.vo.query.store.InStoreDetailVO;
import cn.px.dao.vo.query.store.OutStoreDetailVO;
import cn.px.dao.vo.query.store.SpareStoreVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description 备件基础信息DTO
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class SparePartInfoVO extends BaseVO implements Serializable {
    private String ModelName;

    private String ModelModel;

    private String producerName;

    private String sbNo;

    private String spareStoreId;

    private String storeName;
    /**
     * 品牌
     */
    private String brand;

    /**
     * 是否专用备件
     */
    private Integer isSpecial;
    /**
     * 指标参数
     */
    private String params;
    /**
     * 预警状态：1：待处理，2询价中，3采购中，0正常
     */
    private Integer warnStatus;

    /**
     * 保养预警状态：1：待处理，2询价中，3采购中，0正常
     */
    private Integer forecastStatus;
    /**
     * 使用周期:月
     */
    private BigDecimal usePeriod;
    /**
     * 寿命周期:月
     */
    private BigDecimal agePeriod;
    /**
     * 采购到货周期:天
     */
    private BigDecimal purchasePeriod;
    /**
   * 主键
   */
    @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
    private String id;

    private String spareId;
    /**
     * 數量
     */
    private BigDecimal num;
    /**
     * bom关联表id
     */
    private String bomId;
    /**
     * 原厂编号
     */
    private String initNo;
    /**
     * 备件型号id
     */
    private String modelId;
    /**
     * 设备id
     */
    private String sbId;
    /**
     * 设备部位id
     */
    private String sbPartId;
    /**
     * 设备图片
     */
    private String image;
    /**
     * 设备部位
     */
    private String sbPartName;
    /**
     * 二维码
     */
    private String qrCode;
    /**
     * 计划周期
     */
    private Integer period;
    /**
     * 周期类型: 参考数据字典
     */
    private Integer periodType;
    /**
   * 备件编码
   */
    private String no;

    /**
     * 统一编码
     */
    private String uniteNo;
    /**
     * 名称编码
     */
    private String nameNo;
    /**
     * 规格编码
     */
    private String ggNo;
    /**
   * 备件名称
   */
    private String name;

    /**
     * 备件一级类别
     */
    private String parentTypeId;
    /**
     * 二级类别
     */
    private String middleTypeId;
    /**
     * 三级类别
     */
    private String childTypeId;
    /**
     * 类别
     */
    private String typeId;
    /**
     * 大类编码
     */
    private String typeNo;
    /**
     * 大类编码
     */
    private String parentNo;
    /**
     * 二级编码
     */
    private String middleNo;
    /**
     * 三级编码
     */
    private String childNo;
    /**
     * 大类编码名称
     */
    private String parentName;
    /**
     * 子类编码名称
     */
    private String middleName;
    /**
     * 大类编码名称
     */
    private String childName;
    /**
     * 子类编码名称
     */
    private String typeName;
    /**
   * 备件等级:1-一级; 2-二级;3-三级
   */
    private Integer level;

    /**
   * 备件价值
   */
    private Double initialValue;

    /**
   * 生产商
   */
    private String producerId;

    /**
   * 计量单位: 1-件;2-台;3-条; 4-个
   */
    private String unit;
    /**
     * 包装单位: 1-件;2-台;3-条; 4-个
     */
    private String unitBz;
    /**
     * 计量单位-包裝单位折算系数，24个计量单位，包装为一箱，则系数为24
     */
    private BigDecimal unitRate;
    /**
     * 当前库存
     */
    private BigDecimal currentStock;
    /**
     * 最高库存
     */
    private BigDecimal maxStock;
    /**
     * 最低库存
     */
    private BigDecimal minStock;
    /**
     * 初始库存
     */
    private BigDecimal initStock;
    /**
     * 采购供应商
     */
    private String supplierId;
    /**
     * 自编号
     */
    private String zbh;

    /**
     * 设备名称
     */
    private String sbName;
    /**
     * 设备型号
     */
    private String sbModel;

    /**
     * 规格型号：使用备件的sb_guige
     */
    private String ggxh;
    /**
     * 英文名称
     */
    private String englishName;
    /**
     * 助记码
     */
    private String zjm;
    /**
     * 产地：数据字典
     */
    private Integer cd;
    /**
     * 用途：数据字典
     */
    private Integer yt;

    /**
   * 备注
   */
    private String remark;

    /**
   * 创建人
   */
    private String createdUserId;

    /**
   * 更新人
   */
    private String updateUserId;
    /**
     * 仓库id
     */
    private String storeId;
    /**
   * 创建日期
   */
    private LocalDateTime createdTime;

    /**
   * 更新日期
   */
    private LocalDateTime updateTime;

    /**
     * 关键字
     */
    private String keyword;

    /**
     * 备件仓库信息列表
     */
    private List<SpareStoreVO> storeList;

    /**
     * 备件入库信息列表
     */
    private List<InStoreDetailVO> inStoreList;

    /**
     * 备件出库信息列表
     */
    private List<OutStoreDetailVO> outStoreList;

    /**
     * 备件使用状态
     * SparePartUsedStatusEnum
     */
    private Integer usedStatus;

    /**
     * 备件投入使用日期
     */
    private LocalDate startDate;

    /**
     * 备件下一次更换日期
     */
    private LocalDate changeDate;
}
